def split(a, n): k, m = divmod(len(a), n) return (a[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in range(n)) print( list(split(range(11), 3)) ) # [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]